/* 
 * File:   Derivada_Lagrange.h
 * Author: jorgeorm
 *
 * Created on 12 de enero de 2012, 10:33 PM
 */

#ifndef DERIVADA_LAGRANGE_H
#define	DERIVADA_LAGRANGE_H
#include "librerias/Polinomio.h"
#include <iostream>

class Derivada_Lagrange {
public:
    Derivada_Lagrange(long double xs[], int nDatos);
//    Derivada_Lagrange(const Derivada_Lagrange& orig);
    
//    Es abstracta, se establece que todo el que herede de raíz deberá implementarla
//    @param es el parametro que recibirá la función
//    
    virtual long double funcion(long double param) = 0;
    virtual long double derivadaFuncion(long double param)=0;
    virtual long double derivadaDosFuncion(long double param)=0;
    
//    
//    
    void calcularPolyLagrange();
    void calcularDerivadaConLagrange();
    void calcularErrorLagrange();
    long double evaluarDerivada(long double x);
    long double getError();
    
    virtual ~Derivada_Lagrange();
protected:
    long double * ptr_arrayXs;
    long double * ptr_arrayYs;
    long double errorLagrange;
    Polinomio  obj_polyLagrng;
    
    int nDats;
    
};

#endif	/* DERIVADA_LAGRANGE_H */

